/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package starfox.personagens;

import java.util.ArrayList;
import java.util.Iterator;
import org.newdawn.slick.Image;
import org.newdawn.slick.SlickException;
import util.CaixaColisao;
import util.StopWatch;

/**
 *
 * @author Lucas
 */
public class InimigoSet1 extends Inimigo {
    //ArrayList de tiros
    ArrayList<TiroInimigo1> tiros = null;
    //Tiro temporário, para ser adicionado à ArrayList
    TiroInimigo1 tiro;

    public InimigoSet1(float x) throws SlickException{
        sprite = new Image("imagens/sprites/inimigo1.png");
        pos.x = x;
        pos.y = 50;
        tiros = new ArrayList<TiroInimigo1>();
        controleTiros = new StopWatch();
        //Caixa de colisão em torno do "corpo" da nave
        box = new CaixaColisao(pos.x+38, pos.y, 42, sprite.getHeight());
    }

    //Desenhar o inimigo e os tiros, caso haja algum
    @Override
    public void render(){
        sprite.draw(pos.x, pos.y);
        for(TiroInimigo1 t : tiros)
                t.render();
    }

    public ArrayList<TiroInimigo1> getTiros(){
        return tiros;
    }

    @Override
    public void update(int delta) throws SlickException {
        //Mover o inimigo para a direita
        pos.x += 0.3f*delta;

        //Iniciar o controle de tiros
        if(pos.x > 0 && !controleTiros.isRunning()) controleTiros.start();

        /*Atirar de forma semelhante à da Arwing, porém, os tiros são feitos em um certo
         * intervalo de tempo (aqui definido como entre 0,8s e 1s) e descem.
         */
        if(controleTiros.getElapsedTime() >= 800){
                tiro = new TiroInimigo1(pos.x+sprite.getWidth()/2-4.5f, pos.y+sprite.getHeight());
                tiros.add(tiro);
                controleTiros.reset();
        }
        //Mover os tiros, removendo-os da ArrayList caso saiam da tela
        for(Iterator<TiroInimigo1> it = tiros.iterator(); it.hasNext();) {
            tiro = it.next();
            tiro.update(delta);
            if(tiro.getPos().y > 600)
                it.remove();
        }
        //Atualizar a posição da caixa de colisão
        box.update(pos.x+38, pos.y);
    }

    @Override
    public void update(int delta, Arwing arw) throws SlickException {}
}